#!/usr/bin/env python
# -*- coding: utf8  -*-

import imaplib
import getpass
import sys
import os

# Servidor
server= imaplib.IMAP4_SSL('imap.googlemail.com')

print "\nPRUEBA DE CONEXIÓN A GMAIL"
print "==========================\n"

# Usuario desde el primer argumento de la línea de comandos
user = sys.argv[1]

# Contraseña sin mostrar los caracteres en el prompt
password = getpass.getpass()

# Fichero en el que escribir los mensajes desde el 2º argumento
file_path = sys.argv[2]
file = open( file_path , 'w')

#Hacemos login con nuestro usuario y contraseña
print "Login..."
server.login(user, password)
print "Logged..."

nmensajes = server.select('INBOX');

# Número total de mensajes
nmsg = int(nmensajes[1][0]) 

print 'Obteniendo %d mensajes de Inbox para %s' % (nmsg, user)

# Desde el más reciente hacia atrás
for x in xrange(nmsg, 1, -1):
        # Imprimir porcentaje de progreso
        if x % 10 == 0:
            print "Progreso: mensaje %d de %d (%d%%)" % ((nmsg-x), nmsg, (nmsg-x) * 100 / nmsg ) 

        # Lista para guardar los campos
        l = []

        # Añadir el índice
        l.append( x )

        #Obtener campo FROM
	(a,b)=server.fetch(x, '(BODY[HEADER.FIELDS (FROM)])') 
        if not b[0][1] is None : 
            l.append( b[0][1] )
        else:
            continue

	#Obtener campo TO
        (a,b)=server.fetch(x, '(BODY[HEADER.FIELDS (TO)])') 
        if not b[0][1] is None : 
            l.append( b[0][1] )
        else:
            continue

	#Obtener Asunto
        #(a,b)=server.fetch(x, '(BODY[HEADER.FIELDS (SUBJECT)])') 

	#Obtener Fecha
	(a,b)=server.fetch(x, '(BODY[HEADER.FIELDS (DATE)])') 
        if not b[0][1] is None : 
            l.append( b[0][1] )
        else:
            continue

        # Imprimir en el fichero la lista como una cadena
        #file.write( str( l ) )
        print >>file, str( l )

server.logout()
